package ar.uade.fain.ai.tpo.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Set;

import ar.uade.fain.ai.tpo.model.Categoria;

public class CategoriaDAO extends CacheDAOSupport<Categoria>{

	private static final String SELECT_CATEGORIA = 
			"select * from delivery.dbo.CATEGORIA";
	
	public CategoriaDAO() {
		super();
	}
	
	public Set<Categoria> getAll() {
		List<Categoria> categoriaEnBase = database().select(
				SELECT_CATEGORIA,
				new RowMapper<Categoria>() {
			@Override
			public Categoria map(ResultSet rs) throws SQLException {
				Categoria categoria = new Categoria(
						rs.getString("descripcion"), 
						rs.getLong("idcategoria"));
				return categoria;
			}
		});
		setEntidades(categoriaEnBase);
		return getEntidades();
	}
	public Categoria buscarPorId(final Long id){
		if(id != null){
			Set<Categoria> categoriaEnCache = buscarEnCache(new Selector<Categoria>() {

				@Override
				public boolean aceptar(Categoria entidad) {
					return entidad.getId().equals(id);
				}
			});
			if (!categoriaEnCache.isEmpty()){
				return categoriaEnCache.iterator().next();
			}else{
				return null;
			}
		}else{
			return null;
		}
	}
}
